//#pragma GCC optimize(3)
//#pragma GCC optimize("Ofast,unroll-loops")
#include<bits/stdc++.h>
#define int long long
#define ull unsigned long long
#define lll __int128
//#define double long double
#define fi first
#define se second
using namespace std;
const long long INF=1e16;
const long long mod=998244353,orm=3;
// const long long mod=1000000007;
const int MAXN=1000005;
const double eps=1e-6;
bool ST;
int n,m,Q;
int a[MAXN],g1[MAXN],g2[MAXN],pos[MAXN],c[MAXN];
int f[305][305][305];
struct o {
    int x,y;
}e[MAXN];
int lowbit(int x) {
    return x&(-x);
}
void add(int x,int y) {
    for(;x<=n;x+=lowbit(x)) c[x]+=y;
}
int ask(int x) {
    int res=0;for(;x;x-=lowbit(x)) res+=c[x];return res;
}
int qp(int x,int y) {
    int res=1;
    while(y) {
        if(y&1) y--,res*=x,res%=mod;
        y>>=1,x*=x,x%=mod;
    }
    return res;
}
void solve() {
    cin>>n>>m>>Q;
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=1;i<=Q;i++) cin>>e[i].x>>e[i].y;
    if(m==0) {
        int res=0;
        for(int i=1;i<=n;i++) res+=ask(n)-ask(a[i]),add(a[i],1);
        cout<<res;
    }
    for(int t=0;t<=Q;t++) {
        swap(a[e[t].x],a[e[t].y]);
        for(int i=1;i<=n;i++) pos[a[i]]=i;
        for(int i=1;i<=n;i++) {
            for(int j=i+1;j<=n;j++) f[0][pos[i]][pos[j]]++;
        }
        int inv=qp((n*(n-1)/2)%mod,mod-2);
        for(int i=1;i<=m-t;i++) {
            for(int p=1;p<=n;p++) {
                for(int q=1;q<=n;q++) {
                    g1[p]+=f[i-1][p][q];
                    g2[q]+=f[i-1][p][q];
                    g1[p]%=mod,g2[q]%=mod;
                }
            }
            for(int p=1;p<=n;p++) {
                for(int q=1;q<=n;q++) {
                    if(p!=q) {
                        f[i][p][q]=g1[p]+g2[q]-f[i-1][p][q]*2%mod+f[i-1][q][p]+mod*2;
                        f[i][p][q]%=mod;
                        f[i][p][q]*=inv;
                        f[i][p][q]%=mod;
                        f[i][p][q]+=f[i-1][p][q]*inv%mod*(((n-3)*(n-2)/2)%mod)%mod;
                    }
                }
            }
            for(int j=1;j<=n;j++) g1[j]=g2[j]=0;
        }
        int res=0;
        for(int i=1;i<=n;i++) {
            for(int j=1;j<i;j++) res+=f[m-t][i][j],res%=mod;
        }
        cout<<res<<"\n";
        for(int i=0;i<=m-t;i++) {
            for(int p=1;p<=n;p++) for(int q=1;q<=n;q++) f[i][p][q]=0;
        }
    }
}
bool ED;
signed main() {
	// cout<<(&ST-&ED)/1024.0/1024.0;
	freopen("random.in","r",stdin);
	freopen("random.out","w",stdout);
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    solve();
	return 0;
}